/**
 * 对于部分不兼容的样式，可以通过 mixins 统一处理
 */

/**
 * // NOTE Taro 编译成 RN 时对 border 的处理有问题
 * RN 不支持针对某一边设置 style，即 border-bottom-style 会报错
 * 那么 border-bottom: 1px 就需要写成如下形式：
 * border: 0 style color; border-bottom-width: 1px;
 */
 @mixin border($dir, $width, $style, $color) {
    border: 0 $style $color;
    @each $d in $dir {
      #{border-#{$d}-width}: $width;
    }
  }
  
  /**
   * 对于不能打包到 RN 的样式，可以用 mixins 引入，相对美观一些
   */
  @mixin eject($attr, $value) {
    /*postcss-pxtransform rn eject enable*/
    #{$attr}: $value;
    /*postcss-pxtransform rn eject disable*/
  }
  
  /**
   * // TODO 1px 的线在各端上实现方式不同，统一出来后续再兼容，目前注意两点：
   * 1. Taro 中大写的 PX 不会被编译成 rpx/em，但 RN 还未兼容该写法
   * 2. H5 中 1px(转成 rem 后实际小于 0.5px) + border-radius 会导致 border 不显示
   */
  @mixin hairline($attr) {
    #{$attr}: 1px;
    @include eject($attr, 1PX);
  }
  
  /**
   * NOTE RN 无法通过 text-overflow 实现省略号，这些代码不能打包到 RN 中
   */
  @mixin text-ellipsis() {
    /*postcss-pxtransform rn eject enable*/
    overflow: hidden;
    white-space: nowrap;
    text-overflow: ellipsis;
    /*postcss-pxtransform rn eject disable*/
  }
  
  /**
   * NOTE 实现多行文本省略，RN 用 Text 标签的 numberOfLines，H5/小程序用 -webkit-line-clamp
   */
  @mixin lamp-clamp($line) {
    /*postcss-pxtransform rn eject enable*/
    overflow: hidden;
    text-overflow: ellipsis;
    display: -webkit-box;
    -webkit-line-clamp: $line;
    /* autoprefixer: ignore next */
    -webkit-box-orient: vertical;
    /*postcss-pxtransform rn eject disable*/
  }